# coding: utf-8

"""
    无论传递的参数是 可变 还是 不可变

    * 只要针对参数使用 赋值语句 ，会在函数内部修改局部变量的引用，
      不会影响到外部变量的引用
    * 如果传递的参数是 可变类型，在函数内部，使用方法修改了数据的内容，
      则会影响到外部的数据，因为引用没变

    特例:
    在python中，列表变量调用 `+=` 本质上是在执行列表变量的 `extend` 方法，不会修改变量的引用
"""


def demo(num_list):
    """
    演示传递的参数是可变类型时，使用方法修改了数据的内容，会影响到外部的数据
    :param num_list:
    :return:
    """
    print("函数内部的代码")
    # 在函数内部使用方法修改数据的内容
    num_list.append(100)
    print(num_list)  # [1, 2, 3, 100]
    print("函数执行完成")


gl_list = [1, 2, 3]
demo(gl_list)
print(gl_list)  # [1, 2, 3, 100]
